SID+Midi Music Player docs (3)
------------------------------

Composing tips:
---------------
I used all these effects in the Instinct track, so have a look at my source instruments for more examples.

1) Changing the sid waveform without changing the midi:

   Because the driver is looking for a gate on/off pair for each midi note, you can add more
   gate on events before the gate off happens. (and more gate off events after the gate off pair ends too) 
   If this is on the first 3 channels the extra frames will be sent to the sid chip.

   frame waveform 
   00    $41      - Goes to Sid & Midi
   01    $21      - Only goes to Sid
   02    $20      - Midi only acknowledges that gate is off and will ignore the waveform change.

2) Midi arps/trills/ratchet effects:

   If you rapidly switch the gate on and off in an instrument you can create midi arps in the same way 
   as a standard sid instrument.  The only difference is you can only do this every 2 frames (because of
   the gate off requirement)
   
   frame waveform arp value
   00    $41      $00
   01    $40      $00 - make sure there's a gate off between each one so the midi channel knows to be looking for a new note
   02    $41      $03 - minor arp offset
   03    $40      $03 - it's only going to pick up the gate off so you can leave the transpose blank on these if you
                        want, or even set them to a different pitch for the sid to play
   04    $41      $07 - 5th of the chord
   05    $40      $07
   06    Loop around

   To slow down the speed of the arp, add more space between each note change. This also works with fixed notes
   so can be used to do snare fills or tom rolls.

3) Changing midi patch inside an instrument:

   If you alter the waveform in an instrument after a gate on/off pair, the new waveform patch will be used 
   for the next part of the instrument.   

   frame waveform
   00    $41     - Set to Square wave patch
   01    $40     - Make sure there's one gate off
   02    $21     - Change to Saw wave patch
   
4) Playing a different transpose on sid to the midi
   
   You can have a different transpose on midi from the patch's settings.  However you can also change the 
   transpose on the sid anytime between a gate on being set and a gate off happening, as this will be 
   ignored by the driver for midi.

   frame waveform arp value
   00    $41      $00 - Both sid & midi playing the same note
   01    $41      $0c - Midi is waiting for a gate off, so this only gets sent to the sid chip
   02    $40      $0c - Gate off sent on both, midi ignores the transpose so only the sid plays it

5) Delayed notes

   To make more natural sounding chords across channels or solos you can delay the start of a midi note 
   by a few frames. This is done by leaving the first few frames of an instrument table blank.

   frame waveform 
   00    $00 - Wait three frames into the instrument
   01    $00
   02    $00 
   03    $41 - Start playing here, giving us a more natural delayed start when played with other direct notes.
   04    $40

   Some editors can do the delay straight from the pattern fx.


Advanced options:
-----------------

If you wish to tweak the table used for converting sid sustain to midi velocity it's in mididriver_static.asm.
Look for a label called volumetable.  As you know the sid only has 16 values from 0 silence to 15 full volume.

There is some basic NTSC support, in that the wrapper works on NTSC and you can change the frequency detection
to an NTSC-compatible table.  In mididriver_static.asm change the NTSC variable to 1.   You would then need
your source editor files to be using an NTSC frequency table for the conversion to work.  This, obviously, does
not change your outputted midi device's frequency settings so if using a VST you might need to find a global
tuning option to get it in tune with your sid chip.  The tempo timing is not fixed for NTSC, it still uses the
standard vblank of the hardware.  (50fps or 60fps)

If you are not hearing any notes it might be that the patching process needs to scan more of your song to work.
NOTE : this is *very* unlikely as I've only found one player (Laxity) that needed more than the default 2kb search
area.  In mididata.asm is a label called player_patchsid_threshold . This is how many ram pages the patching 
process goes through before stopping.  You can increase this from $08 (8 * 256 bytes = 2kb) though I 
wouldn't think it needs more than 3kb.
